﻿using System;
using System.Windows.Forms;
using DevExpress.XtraEditors;
using S3.Biz;
using S3.Common;

namespace S3
{
    public partial class ChangePassword : S3FormBase
    {
        public ChangePassword()
        {
            InitializeComponent();
            txtOldPass.Focus();
        }

        private void btnChange_Click(object sender, EventArgs e)
        {
            lblMsg.Text = "";
            //Validate
            string oldPass = txtOldPass.Text.Trim();
            string newPass = txtNewPass1.Text.Trim();
            if (oldPass == string.Empty)
            {
                lblMsg.Text = "Hãy nhập mật khẩu cũ.";
                txtOldPass.Focus();
                return;
            }

            if (newPass == string.Empty)
            {
                lblMsg.Text = "Hãy nhập mật khẩu mới.";
                txtNewPass1.Focus();
                return;
            }

            if (txtNewPass2.Text == string.Empty)
            {
                lblMsg.Text = "Hãy nhập lại mật khẩu mới.";
                txtNewPass2.Focus();
                return;
            }

            if (newPass.Length < 6)
            {
                lblMsg.Text = "Mật khẩu mới phải dài tối thiểu 6 kí tự.";
                txtNewPass1.Focus();
                return;
            }

            if (newPass == oldPass)
            {
                lblMsg.Text = "Mật khẩu mới và Mật khẩu cũ không được trùng nhau.";
                txtNewPass1.Focus();
                return;
            }


            if (newPass != txtNewPass2.Text)
            {
                lblMsg.Text = "Hai mật khẩu mới không giống nhau.";
                txtNewPass1.Focus();
                return;
            }

            string oldPassEncrypted = Utils.Encrypt(oldPass);

            using (var manager = new UserManager())
            {
                //Check old pass
                bool isPassed = manager.Login(Constants.StaffName, oldPassEncrypted);

                if (!isPassed)
                {
                    lblMsg.Text = "Sai mật khẩu cũ !";
                }
                else
                {
                    string newPassWord = Utils.Encrypt(newPass);
                    bool isSuccess = manager.ChangePass(Constants.StaffName, newPassWord);

                    if (isSuccess)
                    {
                        XtraMessageBox.Show("Đổi mật khẩu thành công.");
                        Close();
                    }
                    else
                    {
                        lblMsg.Text = "Lỗi, không tìm thấy người dùng.";
                    }
                }
            }
        }

        private void btnCancel_Click(object sender, EventArgs e)
        {
            Close();
        }

        #region ProcessCmdKey

        /// <summary>
        /// Close form if click ESC
        /// </summary>
        /// <param name="msg"></param>
        /// <param name="keyData"></param>
        /// <returns></returns>
        protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
        {
            try
            {
                if (msg.WParam.ToInt32() == (int) Keys.Escape)
                {
                    Close();
                }
                else
                {
                    return base.ProcessCmdKey(ref msg, keyData);
                }
            }
            catch (Exception Ex)
            {
                XtraMessageBox.Show("Key Overrided Events Error:" + Ex.Message);
            }

            return base.ProcessCmdKey(ref msg, keyData);
        }

        #endregion
    }
}